#include <stdio.h>
#include <string.h>

//实现一个函数，可以左旋字符串K个字符。
void left_rotate(char arr[], int k)
{
    int i = 0;
    int j = 0;
    int len = strlen(arr);
    k %= len;
    for(i = 0; i < k; i++)
    {
        char tmp = arr[0];
        for(j = 0; j < len-1; j++)
        {
            arr[j] = arr[j+1];
        }
        arr[len-1] = tmp;
    }
}

//实现一个函数，可以右旋字符串K个字符
void right_rotate(char arr[], int k)
{
    int i = 0;
    int j = 0;
    int len = strlen(arr);
    k %= len;
    for(i = 0; i < k; i++)
    {
        char tmp = arr[len-1];
        for(j = len-1; j >= 0; j--)
        {
            arr[j] = arr[j-1];
        }
        arr[0] = tmp;
    }
}

//逆序函数
void reverse(int* nums, int left,int right)
{
    while(left < right)
    {
        int tmp = 0;
        tmp = nums[right];
        nums[right] = nums[left];
        nums[left] = tmp;
        left++;
        right--;
    }
}

//通过逆序的方式实现旋转数组
void rotate(int* nums, int numsSize, int k){
    k %= numsSize;
    //先逆序前面n-k个数
    reverse( nums, 0, numsSize-1-k);
    //在逆序后面k个数
    reverse( nums, numsSize-k, numsSize-1);
    //最后整体逆序
    reverse( nums, 0, numsSize-1);
}

int main(){
    char arr[] = "abcdef";
    char arr1[] = "cdefg";
    int arr2[] = {1,2,3,4,5,6,7};
    int k = 0;
    int sz = sizeof(arr2)/sizeof(arr2[0]);
    scanf("%d", &k);

    left_rotate(arr, k);
    right_rotate(arr1, k);
    rotate( arr2, sz, k);
    printf("%s\n", arr);
    printf("%s\n", arr1);
    return 0;
}

